/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package entidades;

import java.io.Serializable;
import java.util.List;
import javax.persistence.Basic;
import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.OneToMany;
import javax.persistence.OneToOne;
import javax.persistence.Table;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;
import javax.xml.bind.annotation.XmlRootElement;
import javax.xml.bind.annotation.XmlTransient;

/**
 *
 * @author BATAQUERO
 */
@Entity
@Table(name = "coordinador_practicas")
@XmlRootElement
@NamedQueries({
    @NamedQuery(name = "CoordinadorPracticas.findAll", query = "SELECT c FROM CoordinadorPracticas c"),
    @NamedQuery(name = "CoordinadorPracticas.findByIdCoordinadorPracticas", query = "SELECT c FROM CoordinadorPracticas c WHERE c.idCoordinadorPracticas = :idCoordinadorPracticas"),
    @NamedQuery(name = "CoordinadorPracticas.findByNombresCoordinadorPracticas", query = "SELECT c FROM CoordinadorPracticas c WHERE c.nombresCoordinadorPracticas = :nombresCoordinadorPracticas"),
    @NamedQuery(name = "CoordinadorPracticas.findByApellido1CoordinadorPracticas", query = "SELECT c FROM CoordinadorPracticas c WHERE c.apellido1CoordinadorPracticas = :apellido1CoordinadorPracticas"),
    @NamedQuery(name = "CoordinadorPracticas.findByApellido2CoordinadorPracticas", query = "SELECT c FROM CoordinadorPracticas c WHERE c.apellido2CoordinadorPracticas = :apellido2CoordinadorPracticas"),
    @NamedQuery(name = "CoordinadorPracticas.findByCorreoCoordinadorPracticas", query = "SELECT c FROM CoordinadorPracticas c WHERE c.correoCoordinadorPracticas = :correoCoordinadorPracticas"),
    @NamedQuery(name = "CoordinadorPracticas.findByCelularCoordinador", query = "SELECT c FROM CoordinadorPracticas c WHERE c.celularCoordinador = :celularCoordinador"),
    @NamedQuery(name = "CoordinadorPracticas.findByTelefonoCoordinador", query = "SELECT c FROM CoordinadorPracticas c WHERE c.telefonoCoordinador = :telefonoCoordinador"),
    @NamedQuery(name = "CoordinadorPracticas.findByIdPrograma", query = "SELECT c.idPrograma FROM CoordinadorPracticas c WHERE c.idCoordinadorPracticas = :idCoordinadorPracticas")})
public class CoordinadorPracticas implements Serializable {
    private static final long serialVersionUID = 1L;
    @Id
    @Basic(optional = false)
    @NotNull
    @Column(name = "idCoordinadorPracticas")
    private Integer idCoordinadorPracticas;
    @Basic(optional = false)
    @NotNull
    @Size(min = 1, max = 45)
    @Column(name = "nombresCoordinadorPracticas")
    private String nombresCoordinadorPracticas;
    @Basic(optional = false)
    @NotNull
    @Size(min = 1, max = 45)
    @Column(name = "apellido1CoordinadorPracticas")
    private String apellido1CoordinadorPracticas;
    @Basic(optional = false)
    @NotNull
    @Size(min = 1, max = 45)
    @Column(name = "apellido2CoordinadorPracticas")
    private String apellido2CoordinadorPracticas;
    @Basic(optional = false)
    @NotNull
    @Size(min = 1, max = 60)
    @Column(name = "correoCoordinadorPracticas")
    private String correoCoordinadorPracticas;
    @Basic(optional = false)
    @NotNull
    @Size(min = 1, max = 12)
    @Column(name = "celularCoordinador")
    private String celularCoordinador;
    @Size(max = 10)
    @Column(name = "telefonoCoordinador")
    private String telefonoCoordinador;
    @NotNull
    @Column(name = "estadoCoordinador")
    private boolean estadoCoordinador;
    @JoinColumn(name = "idCoordinadorPracticas", referencedColumnName = "idUsuario", insertable = false, updatable = false)
    @OneToOne(optional = false)
    private Usuario usuario;
    @JoinColumn(name = "idPrograma", referencedColumnName = "idPrograma")
    @ManyToOne(optional = false)
    private Programa idPrograma;
    @OneToMany(cascade = CascadeType.ALL, mappedBy = "idCoordinadorPracticas")
    private List<Supervisor> supervisorList;

    public CoordinadorPracticas() {
    }

    public CoordinadorPracticas(Integer idCoordinadorPracticas) {
        this.idCoordinadorPracticas = idCoordinadorPracticas;
    }

    public CoordinadorPracticas(Integer idCoordinadorPracticas, String nombresCoordinadorPracticas, String apellido1CoordinadorPracticas, String apellido2CoordinadorPracticas, String correoCoordinadorPracticas, String celularCoordinador) {
        this.idCoordinadorPracticas = idCoordinadorPracticas;
        this.nombresCoordinadorPracticas = nombresCoordinadorPracticas;
        this.apellido1CoordinadorPracticas = apellido1CoordinadorPracticas;
        this.apellido2CoordinadorPracticas = apellido2CoordinadorPracticas;
        this.correoCoordinadorPracticas = correoCoordinadorPracticas;
        this.celularCoordinador = celularCoordinador;
    }

    public Integer getIdCoordinadorPracticas() {
        return idCoordinadorPracticas;
    }

    public void setIdCoordinadorPracticas(Integer idCoordinadorPracticas) {
        this.idCoordinadorPracticas = idCoordinadorPracticas;
    }

    public String getNombresCoordinadorPracticas() {
        return nombresCoordinadorPracticas;
    }

    public void setNombresCoordinadorPracticas(String nombresCoordinadorPracticas) {
        this.nombresCoordinadorPracticas = nombresCoordinadorPracticas;
    }

    public String getApellido1CoordinadorPracticas() {
        return apellido1CoordinadorPracticas;
    }

    public void setApellido1CoordinadorPracticas(String apellido1CoordinadorPracticas) {
        this.apellido1CoordinadorPracticas = apellido1CoordinadorPracticas;
    }

    public String getApellido2CoordinadorPracticas() {
        return apellido2CoordinadorPracticas;
    }

    public void setApellido2CoordinadorPracticas(String apellido2CoordinadorPracticas) {
        this.apellido2CoordinadorPracticas = apellido2CoordinadorPracticas;
    }

    public String getCorreoCoordinadorPracticas() {
        return correoCoordinadorPracticas;
    }

    public void setCorreoCoordinadorPracticas(String correoCoordinadorPracticas) {
        this.correoCoordinadorPracticas = correoCoordinadorPracticas;
    }

    public String getCelularCoordinador() {
        return celularCoordinador;
    }

    public void setCelularCoordinador(String celularCoordinador) {
        this.celularCoordinador = celularCoordinador;
    }

    public String getTelefonoCoordinador() {
        return telefonoCoordinador;
    }

    public void setTelefonoCoordinador(String telefonoCoordinador) {
        this.telefonoCoordinador = telefonoCoordinador;
    }
    
    public boolean getEstadoCoordinador() {
        return estadoCoordinador;
    }

    public void setEstadoCoordinador(boolean estadoCoordinador) {
        this.estadoCoordinador = estadoCoordinador;
    }

    public Usuario getUsuario() {
        return usuario;
    }

    public void setUsuario(Usuario usuario) {
        this.usuario = usuario;
    }

    public Programa getIdPrograma() {
        return idPrograma;
    }

    public void setIdPrograma(Programa idPrograma) {
        this.idPrograma = idPrograma;
    }

    @XmlTransient
    public List<Supervisor> getSupervisorList() {
        return supervisorList;
    }

    public void setSupervisorList(List<Supervisor> supervisorList) {
        this.supervisorList = supervisorList;
    }

    @Override
    public int hashCode() {
        int hash = 0;
        hash += (idCoordinadorPracticas != null ? idCoordinadorPracticas.hashCode() : 0);
        return hash;
    }

    @Override
    public boolean equals(Object object) {
        // TODO: Warning - this method won't work in the case the id fields are not set
        if (!(object instanceof CoordinadorPracticas)) {
            return false;
        }
        CoordinadorPracticas other = (CoordinadorPracticas) object;
        if ((this.idCoordinadorPracticas == null && other.idCoordinadorPracticas != null) || (this.idCoordinadorPracticas != null && !this.idCoordinadorPracticas.equals(other.idCoordinadorPracticas))) {
            return false;
        }
        return true;
    }

    @Override
    public String toString() {
        return "entidades.CoordinadorPracticas[ idCoordinadorPracticas=" + idCoordinadorPracticas + " ]";
    }
    
}
